모의해킹
호스트기반모의해킹_21_MySQL 데이터베이스 공격
작성자 : Heehyeon Yoo|2025-12-02
# 모의해킹# MySQL# DB Dumping# 정보 유출
1. 개요
계정 정보 기반 공격이나 취약점 공격(SQLi 등)을 통해 데이터베이스(DB) 접근 권한을 획득했다면, 다음 단계는 데이터 추출(Data Exfiltration)이다. 이를 DB 덤핑(Dumping)이라고 한다.
- 목적: 개인정보, 패스워드 해시, 설정 정보 등 중요 자산 탈취.
- 윤리적 주의사항: 모의해킹 시 고객사의 전체 DB를 덤프하는 것은 절대 금지다. 개인정보보호법 위반 소지가 있으며, 네트워크 대역폭을 고갈시킬 수 있다. 개념 증명(PoC)을 위해 단 1~2개의 레코드만 추출해야 한다.
2. 공격 도구: mysqldump
mysqldump는 원래 백업 유틸리티지만, 공격자에게는 훌륭한 데이터 탈취 도구다.
2.1 원격 덤프 명령(Remote Dump)
비밀번호 입력 시 공백 없이 붙여 써야 하는 특이한 문법(-pPassword)을 주의한다.
# 기본 구문: -u [User] -p[Pass] -h [Host] -P [Port] [DB_Name]
mysqldump -u root -p1234 -h 192.168.1.10 -P 3306 production_db
2.2 특정 테이블 및 조건부 덤프
전체 DB가 아닌 공격에 필요한 데이터만 선별적으로 추출한다.
- 특정 테이블만 덤프:
mysqldump ... production_db users > users_dump.sql - 조건부 덤프(
--where): 특정 조건을 만족하는 레코드만 추출. 관리자 계정 정보만 필요할 때 유용하다.mysqldump ... production_db users --where="username LIKE '%admin%'"- Admin 문자열이 포함된 계정 정보만 추출하여 침투 흔적과 영향을 최소화한다.
3. 데이터 파싱 및 활용
덤프된 데이터(.sql)는 테이블 생성 구문(Schema)과 데이터 삽입 구문(INSERT INTO)이 섞여 있어 가독성이 떨어진다. 해시 크래킹 등을 위해서는 파싱(Parsing)이 필요하다.
3.1 수동 파싱 예시(Linux 명령어 활용)
덤프 파일에서 패스워드 해시만 추출하는 파이프라인.
# 1. INSERT 구문 추출
grep "INSERT INTO users" dump.sql
# 2. cut/awk 등으로 필드 분리(예: 3번째 컬럼이 해시라고 가정)
| cut -d ',' -f 3
# 3. 불필요한 따옴표, 괄호 제거
| tr -d "()'"
# 4. 결과 저장
> hash_list.txt
4. 실무에서는?
- DB 설정 파일 탐색:
- DB에 직접 접속하지 못하더라도, 웹 애플리케이션의 설정 파일(
config.php,settings.py,wp-config.php)에서 하드코딩된 DB 계정 정보를 찾는 경우가 빈번하다.
- DB에 직접 접속하지 못하더라도, 웹 애플리케이션의 설정 파일(
- 최소 권한 원칙 확인:
- 웹 애플리케이션이 사용하는 DB 계정이
DROP TABLE권한이나 불필요한GRANT권한을 가지고 있는지 확인하여 보고서에 포함한다.
- 웹 애플리케이션이 사용하는 DB 계정이